package csc.fresher.dao;

import java.sql.Timestamp;
import java.util.List;

import csc.fresher.entity.CustomerAccount;
import csc.fresher.entity.DepositTransaction;
import csc.fresher.entity.TransactionState;

public interface DepositAccountTransactionDao extends TransactionDao {

	public long createTransactionForTransferFunds(DepositTransaction transaction);

	public boolean approveTransactionForTransferFunds(
			DepositTransaction transaction, CustomerAccount receiver,
			long adminID);

	public boolean denyTransctionForTransferFunds(
			DepositTransaction transaction, CustomerAccount sender, long adminID);

	public List<DepositTransaction> searchTransactionByDepositAccountIdInGivenPeriod(
			long depositAccountNumber, Timestamp beginDate, Timestamp endDate,boolean showInternet,
			int offset, int rowReturn);

	public List<DepositTransaction> getDepositTransactionByState(
			TransactionState transactionState);

	public int getNumberOfTransactionByDepositAccountIdInGivenPeriod(
			long depositAccountNumber, Timestamp beginDate, Timestamp endDate,boolean showInternet);

	public long createTransactionForWithdrawFunds(DepositTransaction transaction);

	public long createTransactionForAddFunds(DepositTransaction transaction);

	public boolean approveTransctionForWithdrawFunds(
			DepositTransaction transaction, long adminID);

	public boolean denyTransactionForWithdrawFunds(
			DepositTransaction transaction, CustomerAccount account,
			long adminID);

	public boolean approveTransctionForAddFunds(DepositTransaction transaction,
			CustomerAccount account, long adminID);

	public boolean denyTransactionForAddFunds(DepositTransaction transaction,
			long adminID);
}
